package varredor.model;

import java.rmi.Naming;
import java.util.Date;
import java.util.List;
import varredor.StartPoint;
import varredor.controller.ArquivoCompartilhadoController;
import varredor.rmi.ArquivoCompartilhado;

public class Varredor implements Runnable {

	private ComputadorNo noAtual;

	public void run() {

		try {
			Thread.currentThread().sleep(1000);
		} catch (Exception e) {
			e.printStackTrace();
		}
		while (true) {
			Cenario cenario = StartPoint.getINSTANCE().getCenario();
			//encerra
			if (cenario == null)
				return;

			noAtual = cenario.getComputadorNoLivre();

			//encerra
			if (noAtual == null)
				return;

			try {
				long miliSegundos = System.currentTimeMillis();
				String ip = noAtual.getIp();

				ArquivoCompartilhado stub = (ArquivoCompartilhado) Naming.lookup("rmi://" + ip + "/ArquivoCompartilhado");

				List<Registro> response = stub.getRegistrosAlterados();

				System.out.println(response);

				for (Registro registro : response)
					ArquivoCompartilhadoController.getINSTANCE().adicionarRegistro(registro);

				noAtual.setVerificado(true);
				noAtual.setEmVerificacao(false);
				noAtual.setDataVarredura(new Date());

				noAtual.setTempoVarredura(System.currentTimeMillis() - miliSegundos);

				StartPoint.getINSTANCE().termineiVarredura();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}

	}

	public static void main(String[] args) {

		try {
			ArquivoCompartilhado stub = (ArquivoCompartilhado) Naming.lookup("rmi://localhost/ArquivoCompartilhado");

			System.out.println("TESTE DE CONSULTA AO RMI \n --");
			List<Registro> response = stub.getRegistrosAlterados();
			System.out.println(response);
		} catch (Exception e) {
			System.err.println("Client exception: " + e.toString());
			e.printStackTrace();
		}

	}
}
